package 享元模式.使用实例;

import java.util.HashMap;

public class ExamInfoFactory {
	// 对象池，用来支持不同颗粒度的复用
	private static HashMap<String, ExamInfo> pool = new HashMap<String, ExamInfo>();

	/**
	 * 这里我们使用一个 map 对象来实现池的功能，
	 * 通过科目我们可以获取池中的某个考试信息实例，
	 * 如果存在则直接从池中获取返回，
	 * 如果不存在，我们会手动 new 一个考试信息，
	 * 然后再将其放入池中，之后再返回。
	 */
	public static ExamInfo getExamInfo(String subject) {
		ExamInfo examInfo = null;
		if (pool.containsKey(subject)) {
			examInfo = pool.get(subject);
			System.out.println("这里直接从对象池 hashMap中查找到了 examInfo ，所以直接返回了，达到了复用的效果");
		} else {
			System.out.println("发现对象池中没有找到对应的技术，就需要创建出来。并且放在池子里面");
			examInfo = new ExamInfo(subject);
			pool.put(subject, examInfo);
		}
		return examInfo;
	}
}
